package beanstao.util.store;

import java.util.Collection;

import beanstao.util.id.Id;
import beanstao.util.log.ILog;
import beanstao.util.store.database.Where;


/**
 * 对Request(请求数据)的封装。
 */
public interface IQD extends ILog
{
	/**
	 * 获得Request携带的“修改者”ID
	 * @return
	 */
	public Id getModifyId();

	/**
	 * 获取针对实体的查询类型
	 * @return
	 */
	public String getQueryType();

	/**
	 * 将本类型的数据组成一般的XML查询语句
	 */
	public String toXPath();

	/**
	 * 将本类型的数据组成一般的Sql的Where语句
	 */
	public Where toSimpleWhere();

	/**
	 * 将本类型的数据组成一般的Sql的Where语句,是否包含修改者做为查询条件
	 */
	public Where toSimpleWhere(boolean isContainModiftor);

	/**
	 * 根据指定的键获取值
	 * @param key
	 * @return
	 */
	public KV get(String key);

	/**
	 * 获得数据集合的键的集合
	 * @return
	 */
	public Collection<String> getKeys();

	/**
	 * 获得数据集合的值的集合
	 * @return
	 */
	public Collection<KV> getValues();

}
